package cn.tedu.oop3;

/**该类用于继承的入门案例
 * @author ：Dsi
 * @date ：2021/11/8 17:07
 */
public class TestExends {
    public static void main(String[] args) {
        Anima a=new Anima();
        Cat c=new Cat();
        MiaoMiao m=new MiaoMiao();
        /**3.继承相当于是子类将父类的功能复制了一份
         * 继承还具有传递性，爷爷的功能会传递给爸爸，爸爸的功能会传递给孙子
         */
        a.eat();
        c.eat();
        m.eat();
    }
}
/**1.我们通过extends关键字建立子类与父类的继承关系，格式：子类 extends 父类
 * 2.Java的类只支持单继承：一个子类只能拥有一个父类，但一个父类可以拥有多个子类
 * */
//爷爷辈
class Anima{
    public void eat(){
        System.out.println("吃Anima吃飒飒喜爱那个");
        //Cat c=new Cat();
        //c.eat();//BUG
    }
}
//父辈

/**6.继承是一种is a的关系，比如小猫是一只小动物，MiaoMiao是一只小猫
 * 继承要求子类必须是父类的一种下属类型，依赖性非常强，强耦合
 */
class Cat extends Anima{
    int a =10;
    private int b=100;
}
//子代
class MiaoMiao extends Cat{
    /**4.子类可以拥有自己独有的方法，实现了功能的扩展*/
    public void studyJava(){
        System.out.println("正在学java~~~ing");
        System.out.println(a);
        /**子类继承父类之后，可以使用父类的所有的非私有资源
         * 注意：私有资源不可使用的原因，不是没有继承过来
         * 而是被private修饰，访问受限制
         */
        //System.out.println(b);
    }
}